package com.bryant.demo05.ui.start

import com.bryant.demo05.base.BasePresenter
import com.bryant.demo05.storage.FavoriteManager

class StarListPresenter(val mView: StarListView, val mInteractor: StarListInteractor):
    BasePresenter<StarListView, StarListInteractor>(mView, mInteractor) {
        // 1. 获取数据
        fun getCityList() {
            // 1. 获取视图的上下文对象
            var context = mView.getContext()
            // 2. 判断上下文对象是否为空 -> 确保View处于有效的应用程序环境中
            if (context == null){
                // 执行view中失败的方法 - 该方法会由Fragment继承
                mView.getCityListFailed()
                 return
            }
            // 3.  从FavoriteManager获取当前用户的收藏列表，并转换为不可变列表
            // -> toList变为不可变的List集合， 确保列表的只读性
            val favorites = FavoriteManager.getCurrentUserFavorites().toList()
            // 4. 获取成功调用view中的方法
            mView.getCityListSuccess(favorites)
        }

    // 2. 删除数据
    fun deleteCity(cityName: String) {
        // 1. 获取视图的上下文对象
        var context = mView.getContext()
        // 2. 确保上下文对象不为空
        if (context == null){
            // 3. 删除失败调用view中的方法
            mView.deleteCityFailed()
            return
        }
        // 3. 在FavoriteManager删除
        FavoriteManager.removeFavorite(cityName)
        // 4. 删除成功调用view中的方法
        mView.deleteCitySuccess()
    }

}